import tkinter as tk
from tkinter import ttk
from tkinter import messagebox
from management.user import UserManagementTab  

class TabManager:
    def __init__(self, root):
        self.root = root
        self.root.title("多页签管理页面")
        self.root.geometry("800x500")

        # 创建菜单栏
        self.create_menu_bar()

        # 创建状态栏
        self.create_status_bar()

        # 创建主布局（侧边栏 + 内容区域）
        self.create_main_layout()

    def create_menu_bar(self):
        menubar = tk.Menu(self.root)
        self.root.config(menu=menubar)

        # 文件菜单
        file_menu = tk.Menu(menubar, tearoff=0)
        file_menu.add_command(label="新建页签", command=self.add_tab)
        file_menu.add_command(label="关闭当前页签", command=self.close_tab)
        file_menu.add_separator()
        file_menu.add_command(label="退出", command=self.root.quit)
        menubar.add_cascade(label="文件", menu=file_menu)

        # 帮助菜单
        help_menu = tk.Menu(menubar, tearoff=0)
        help_menu.add_command(label="关于", command=self.show_about)
        menubar.add_cascade(label="帮助", menu=help_menu)

    def create_status_bar(self):
        self.status_bar = tk.Label(self.root, text="就绪", bd=1, relief=tk.SUNKEN, anchor=tk.W)
        self.status_bar.pack(side=tk.BOTTOM, fill=tk.X)

    def create_main_layout(self):
        # 使用 PanedWindow 实现左右分割
        self.paned_window = tk.PanedWindow(self.root, orient=tk.HORIZONTAL)
        self.paned_window.pack(fill=tk.BOTH, expand=True)

        # 左侧侧边栏
        self.create_sidebar()

        # 右侧内容区域（多页签管理）
        self.create_tabs()

    def create_sidebar(self):
        # 左侧侧边栏 Frame
        sidebar = tk.Frame(self.paned_window, width=150, bg="#f0f0f0")
        self.paned_window.add(sidebar)

        # 在侧边栏中添加按钮
        tk.Button(sidebar, text="用户管理", command=self.open_user_management_tab).pack(pady=10, padx=10, fill=tk.X)
        tk.Button(sidebar, text="按钮 2", command=lambda: self.update_status_bar("点击了按钮 2")).pack(pady=10, padx=10, fill=tk.X)
        tk.Button(sidebar, text="按钮 3", command=lambda: self.update_status_bar("点击了按钮 3")).pack(pady=10, padx=10, fill=tk.X)

    def create_tabs(self):
        # 右侧内容区域 Frame
        content_frame = tk.Frame(self.paned_window)
        self.paned_window.add(content_frame)

        # 创建 Notebook（多页签管理）
        self.notebook = ttk.Notebook(content_frame)
        self.notebook.pack(fill=tk.BOTH, expand=True)

        # 初始页签
        self.add_tab()

    def add_tab(self):
        tab = tk.Frame(self.notebook)
        self.notebook.add(tab, text=f"页签 {self.notebook.index(tk.END) + 1}")
        self.notebook.select(tab)

        # 在页签中添加一些内容
        label = tk.Label(tab, text="这是一个新的页签")
        label.pack(pady=20)

        self.update_status_bar(f"已添加新页签: {self.notebook.tab(self.notebook.select(), 'text')}")

    def open_user_management_tab(self):
        # 检查是否已经存在用户管理页签
        for tab_id in self.notebook.tabs():
            tab_text = self.notebook.tab(tab_id, "text")
            if tab_text == "用户管理":
                # 如果存在，则激活该页签
                self.notebook.select(tab_id)
                self.update_status_bar("已激活用户管理页签")
                return

        # 如果不存在，则创建新的用户管理页签
        user_tab = UserManagementTab(self.notebook)
        self.notebook.add(user_tab, text="用户管理")
        self.notebook.select(user_tab)
        self.update_status_bar("已打开用户管理页签")

    def close_tab(self):
        if self.notebook.index(tk.END) > 1:
            current_tab = self.notebook.select()
            self.notebook.forget(current_tab)
            self.update_status_bar("已关闭当前页签")
        else:
            messagebox.showwarning("警告", "至少需要一个页签")

    def show_about(self):
        messagebox.showinfo("关于", "这是一个带侧边栏的多页签管理页面示例")

    def update_status_bar(self, message):
        self.status_bar.config(text=message)


if __name__ == "__main__":
    root = tk.Tk()
    app = TabManager(root)
    root.mainloop()